<?php
/**
 * Library Manager
 * 管理了library内部类的import与输出 
 * @author yangdongqi <yangdongqi@hayzone.com>
 * @package lib
 */
class LibMan extends CComponent {
	
	public function init() {}
	
	/**
	 * 运行一个类的方法
	 */
	public function run($alias, $method, $params = array()) {
		$className = $this->getAliasClassName($alias);
		$this->import($alias);
		$rfc = new ReflectionClass($className);
		if($rfc->hasMethod($method)) {
			return call_user_func_array(array($rfc->newInstance(), $method), $params);
		} else {
			return null;
		}
	}
	
	public function getAliasClassName($alias) {
		if(strpos($alias, '.') !== false) {
			$className = explode('.', $alias);
			$className = $className[count($className)-1];
			return $className;
		} else {
			return $alias;
		}
		
	}
	
	/**
	 * Import 一个类
	 * @param string $alias
	 * @param string $version
	 */
	public function import($alias, $version = '') {
		Yii::import('lib.'.$alias);
	}
	
	/**
	 * Import 一个behavior类
	 * @param string $alias
	 * @param string $version
	 */
	public function ib($alias, $version = '') {
		$this->import('behaviors.'.$alias, $version);
	}
	
	/**
	 * Import 一个 helper类
	 * @param string $alias
	 * @param string $version
	 */
	public function ih($alias, $version = '') {
		$this->import('helpers.'.$alias, $version);
	}
	
	/**
	 * 输出一个类的alias路径
	 * @param string $alias
	 * @param string $version
	 */
	public function c($alias, $version = '') {
		return 'lib.'.$alias;
	}
	
	/**
	 * 输出一个behavior类的alias路径
	 * @param string $alias
	 * @param string $version
	 */
	public function bc($alias, $version = '') {
		return $this->c('behaviors.'.$alias, $version);
	}
	
	/**
	 * 输出一个helper类的alias路径
	 * @param string $alias
	 * @param string $version
	 */
	public function hc($alias, $version = '') {
		return $this->c('helpers.'.$alias, $version);
	}
	
}

?>